מסדי נתונים רלציונים התצפית של כל משתמש על פי היישום ייצוג הנתונים על פי המודל כטבלאות שמירה בפועל על הדיסק

Σχετικά έγγραφα
שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

חורף תש''ע פתרון בחינה סופית מועד א'

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

תרגול פעולות מומצאות 3

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

תרגיל 13 משפטי רול ולגראנז הערות

ל הזכויות שמורות לדפנה וסטרייך

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

Logic and Set Theory for Comp. Sci.

הגדרה: מצבים k -בני-הפרדה

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

ניהול תמיכה מערכות שלבים: DFfactor=a-1 DFt=an-1 DFeror=a(n-1) (סכום _ הנתונים ( (מספר _ חזרות ( (מספר _ רמות ( (סכום _ ריבועי _ כל _ הנתונים (

צעד ראשון להצטיינות מבוא: קבוצות מיוחדות של מספרים ממשיים

gcd 24,15 = 3 3 =

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

השאלות..h(k) = k mod m

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תורת הגרפים - סימונים

שאלה 1 V AB פתרון AB 30 R3 20 R

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

אלגברה רלציונית ניר אדר

גבול ורציפות של פונקציה סקלרית שאלות נוספות

{ : Halts on every input}

מתמטיקה בדידה תרגול מס' 5

אלגברה ליניארית (1) - תרגיל 6

התפלגות χ: Analyze. Non parametric test

מבני נתונים ויעילות אלגוריתמים

סדרות - תרגילים הכנה לבגרות 5 יח"ל

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

אלגברה מודרנית פתרון שיעורי בית 6

מבני נתונים 08a תרגול 8 14/2/2008 המשך ערמות ליאור שפירא

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

סיכום בנושא של דיפרנציאביליות ונגזרות כיווניות

מבני נתונים ואלגוריתמים תרגול #11

תרגיל 7 פונקציות טריגונומטריות הערות

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

אלגברה ליניארית 1 א' פתרון 8

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

עצי 2-3 תזכורת: בנים. דוגמאות: Chapter 19: B trees ( ) Chapter 15: Augmenting data structures ( )

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

מודלים חישוביים תרגולמס 5

סיכום- בעיות מינימוםמקסימום - שאלון 806

אלגברה לינארית (1) - פתרון תרגיל 11

נספח לפרק 10 דוגמא לאנליזה של מכונת מצבים ננסה להבין את פעולתה של מ כונת המצבים הבאה : Input X. q 0 q 1. output D FF-0 D FF-1. clk

3-9 - a < x < a, a < x < a

מדוע אופ טימיזציה נחו צ ה? אופטימיזציה ש ל ש איל תו ת. Query Optimization ארכיטקטורה של אופטימייזר (המשך) סיבוכיות נתו נים Data Complexity

תורת הקבוצות תרגיל בית 2 פתרונות

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

תוכן הפרק: ,best case, average case דוגמאות 1. זמן - נמדד באמצעות מס' פעולות סיבוכיות, דוגמאות, שיפור בפקטור קבוע האלגוריתם. וגודלם. איטרטיביים. לקלט.

מתמטיקה בדידה תרגול מס' 12

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

מתמטיקה בדידה תרגול מס' 13

Hash Tables (המשך) ערבול (Hashing)

אלגברה ליניארית 1 א' פתרון 7

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

x a x n D f (iii) x n a ,Cauchy

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

אינפי - 1 תרגול בינואר 2012

הרצאה. α α פלוני, וכדומה. הזוויות α ל- β שווה ל-

co ארזים 3 במרץ 2016

תרגול משפט הדיברגנץ. D תחום חסום וסגור בעל שפה חלקה למדי D, ותהי F פו' וקטורית :F, R n R n אזי: נוסחת גרין I: הוכחה: F = u v כאשר u פו' סקלרית:

תורת הקבוצות יובל קפלן סיכום הרצאות פרופ ארז לפיד בקורס "תורת הקבוצות" (80200) באוניברסיטה העברית,

אלגוריתמים ללכסון מטריצות ואופרטורים

Domain Relational Calculus דוגמאות. {<bn> dn(<dn, bn> likes dn = Yossi )}

אלגברה ליניארית 1 א' פתרון 2

(2) מיונים השאלות. .0 left right n 1. void Sort(int A[], int left, int right) { int p;

רשימת משפטים והגדרות

"קשר-חם" : לקידום שיפור וריענון החינוך המתמטי

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

Charles Augustin COULOMB ( ) קולון חוק = K F E המרחק סטט-קולון.

ניתוח סיבוכיות - פונקציות רקורסיביות פיתוח טלסקופי

תורת המספרים 1 פירוק לגורמים ראשוניים סיכום הגדרות טענות ומשפטים אביב הגדרות 1.2 טענות

רשימת משפטים וטענות נכתב על ידי יהונתן רגב רשימת משפטים וטענות

דוגמה: יהי T עץ בינארי כפי שמתואר בציור הבא:

מבני נתונים מבחן מועד ב' סמסטר חורף תשס"ו

אלגברה לינארית מטריצות מטריצות הפיכות

קיום ויחידות פתרונות למשוואות דיפרנציאליות

בחינה בסיבוכיות עמר ברקמן, ישי חביב מדבקית ברקוד

אסימפטוטיים תוכנית הקורס עצי AVL עצי 2-3 עצי דרגות סיבוכיות משוערכת מיון מיון שימושים: גרפים איסוף אשפה

טענה חשובה : העתקה לינארית הינה חד חד ערכית האפס ב- הוא הוקטור היחיד שמועתק לוקטור אפס של. נקבל מחד חד הערכיות כי בהכרח.

מבני נתונים (234218) 1

ביטויים רגולריים הפקולטה למדעי המחשב אוטומטים ושפות פורמליות (236353) הרצאה 5

TECHNION - ISRAEL INSTITUTE OF TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE סמסטר אביב תשס"ו מס' סטודנט:


Trie מאפשר חיפוש, הכנסה, הוצאה, ומציאת מינימום (לקסיקוגרפי) של מחרוזות.

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 315, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן

מיונים א': מיון (Sorting) HeapSort. QuickSort תור עדיפויות / ערימה

תרגול מס' 1 3 בנובמבר 2012

( k) ( ) = ( ) ( ) ( ) ( ) A Ω P( B) P A B P A P B תכונות: A ו- B ב"ת, אזי: A, B ב "ת. בינומי: (ההסתברות לk הצלחות מתוך n ניסויים) n.

1 סכום ישר של תת מרחבים

Transcript:

מסד נתונים רלציוני 234322 פרק 8 הדרך המקובלת לטפל במאגרי נתונים גדולים. מוגדרות פעולות אבסטרקטיות על הנתונים באופן שאינו תלוי במימוש. בקורס נלמד כיצד לממש את המסד והפעולות האלו. נלמד: א. הפעולות הבסיסיות על מסדי נתונים. ב. כיצד משלבים פעולות שונות (אלגברה רלציונית). ג. כיצד ממשים פעולה בודדת. ד. כיצד ממשים שילוב של פעולות תחת מגבלות זיכרון. 2 מערכות קבצים 1 מערכות קבצים (טבלאות) יחסים מסדי נתונים רלציונים במודל הרלציוני, מסתכלים על הנתונים כאילו היו מסודרים בטבלה. כל שורה בטבלה תיקרא רשומה, שורה או n הי-.(n-tuple) המודל הרלציוני הוא דרך להתבונן על נתונים, שבה מנתקים את המימוש מהאופן שבו הנתונים מוצגים. תחום (domain) : קבוצה (סופית או אינסופית) המתארת את כל הערכים ברשומה. עבור שדה כלשהו האפשריים תצפית רמת רמה לוגית רמה פיסית התצפית של כל משתמש על פי היישום ייצוג הנתונים על פי המודל כטבלאות שמירה בפועל על הדיסק כל המחרוזות באורך 20 מיקוד (כל המספרים בין 10000 ל- 99999 ) תאריך -1.1.1900) (31.12.2999 מספר שלם 4 מערכות קבצים 3 מערכות קבצים

יחס יחס (רלציה, טבלה) יחס :(relation) רב-קבוצה bag) (multiset, של איברים של המכפלה הקרטזית של התחומים המופיעים בסכמה. שם פרטי שנת הולדת פרקים ירמיהו -500 52 ישעיהו -550 66 שמואל -700 55 יונה -200 4 יחזקאל -400 48 5 מערכות קבצים prophets prophets string date integers שם היחס: בדוגמא הקודמת - prophets התכונות ) :(attributes למשל - {שם פרטי, שנת-הולדת, פרקים ותחומיהם. :(relation שם היחס והתכונות שלו, scheme) היחס סכמת דוגמאות: Prophets(chapters, birth_year, name) Branch(b_name, assets, b_city) Customer(c_name, street, c_city) Deposit(b_name, account_number, customer_name, balance) Borrow(b_name, loan_number, loan_number, c_name, amount) 6 מערכות קבצים אלגברה של יחסים (אלגברה רלציונית ( במערכות מסדי נתונים, שאילתות נכתבות בשפה שמיועדת למשתמשים אנושיים במטרה לפשט למשתמשים כתיבת שאילתות, למשל ב- QL : סדר הרשומות ביחסים בעיקרון, אין סדר לרשומות ביחס והפעולות על יחסים לא מושפעות מאופן שמירת היחסים בדיסק, כחלק מהעיקרון של הפרדה בין המודל לאופן המימוש. בפועל, סדר שמירת הרשומות בדיסק משפיע על המימוש של חלק מהפעולות. לעיתים, משתמשים מעוניינים בתוצאה ממוינת או רק ברשומות הראשונות של יחס (על פי מיון כלשהו) ELECT name FOM Prophets WHEE birth_year<-500; אלגברה רלציונית כוללת אוסף של פעולות על יחסים שקל לממש. שאילתות ב- QL מתורגמות לאלגברה ומבוצעות. (בדומה לתרגום שפה עילית כמו C לשפת מכונה). 8 מערכות קבצים 7 מערכות קבצים

כפילות של רשומות פעולות על יחסים פעולות שמחזירות יחס חדש \ איחוד, חיתוך, הפרש, מכפלה select בוחר חלק מהרשומות π הטלה (projection) בוחר חלק מהעמודות π החלפת שם של שדה A B δ הפוך את היחס לקבוצה (השאר עותק אחד מכל רשומה) join צירוף יחסים sort מארגן מחדש את היחס על ידי מיון על פי תכונה או מספר תכונות פונקציות הקבצה על עמודה המכילה מספרים sum max, min, average, מחזירות מספר פונקציות הקבצה על טבלה count מחזירה מספר במודל התיאורטי, יחס הוא קבוצה, כלומר אין כפילות של רשומות. במערכות לניהול מסדי נתונים טבלאיים, יחס הוא רב קבוצה (רשומה יכולה להופיע יותר מפעם אחת). בקורס זה, נניח כי כל הפעולות הן פעולות על רב-קבוצות. אם יודעים לממש את הפעולות על רב קבוצות, קל לייצר מהן מימוש של פעולות על קבוצות (כיצד?) 10 מערכות קבצים 9 מערכות קבצים חיתוך איחוד d e f = { r: r or r d e f = { r: r and r דורש סכמות זהות d a f d a f 12 מערכות קבצים דורש סכמות זהות מספר המופעים של רשומה הוא סכום מספר המופעים בשני היחסים 11 מערכות קבצים a c e מספר המופעים של רשומה הוא המינימום על מספר המופעים בכל אחד מהיחסים

\ = { r: r and r \ c b e a c e הפרש \ מכפלה קרטזית דורש סכמות זהות מספר המופעים של רשומה הוא ההפרש בין מספר המופעים ביחס הראשון ומספר המופעים ביחס השני (אך לא פחות מאפס) 13 מערכות קבצים = {( r 1,r 2,,r n,s 1,,s m ): r and s B1 a c B2 b B1 B2 a b a b a b c b c b c b b אם לסכמות יש תכונה משותפת, נשנה את שמות התכונות (למשל (.a,.a מספר הרשומות בתוצאה: (מספר רשומות ) (מספר רשומות ) 14 מערכות קבצים select המקיימות תנאי נתון C. σ C () = {r : r satisfies C c c c σ a A2 b() σ A2=b () בחירה σ select בוחר את הרשומות הפעולה מאפשרת להגדיר שאילתות טווח [a,b] ע"י π הטלה projection מצמצמת את היחס לחלק מהעמודות π l1, l2,, ln ()={(r l1,r l2, r ln ) : (r 1,,r n ) π A1,A3 () π A2 () A1 a a c A3 c c d A2 b b b 16 מערכות קבצים 15 מערכות קבצים

צירוף join יחס חדש שמתקבל משני יחסים שיש להם תכונות בעלות אותו השם. היחס מתקבל מצירוף הרשומות שמסכימות על התכונות בעלות השמות המשותפים. דוגמה: Q(name, address, tel_no) = (name, address) (name, tel_no) נגדיר קודם join בין שורות: עבור יחסים, שקבוצת התכונות המשותפות להן היא A יהיו r, s כך ש- r.a = s.a ו- s r היא השורה שמתקבלת משרשור r s תוך שמירת עותק אחד בלבד של תכונות A. s = (Homer impson, 555-2121) r = (Homer impson, 123 Fake t. pringfield) r s = (Homer impson, 123 Fake t. pringfield, 555-2121) צירוף - join (המשך) נגדיר join בין היחסים, כאשר attr() :A = attr() = {r s : r, s, π A (r) = π A (s) דוגמה: 18 מערכות קבצים 17 מערכות קבצים A B C A B C D C D d1 c d1 a1 c a1 c d1 c2 d2 a1 c1 a1 d c2 d2 c2 d3 a1 d c2 a1 d c2 d3 (join) דוגמה לשימוש בצירוף - join הגדרה מתמטית של צירוף נתונים יחסים rו- sעם סכמות ו- ועם קבוצת תכונות משותפת A. הצירוף מוגדר כך: = π (/) (σ A=A (ρ A A (r) s)) יחס מכיל בכל רשומה מס' לקוח וסכום שיש לחייב. יחס מכיל עבור כל לקוח מס' לקוח, שם וכתובת. החיוב. וסכום כתובתו, לכל חיוב את שם הלקוח, מספרו, יכיל 20 מערכות קבצים 19 מערכות קבצים

פרמטרים לחישובי זמנים אלגוריתמים לביצוע פעולות על יחסים מעבר יחיד (לא תמיד ניתן ליישום). לולאות מקוננות. אלגוריתמים מבוססי מיון. מבוססי ערבול. אלגוריתמים אלגוריתמים המשתמשים באינדקס קיים של יחס. יהי יחס. מספר הבלוקים (גזרות) של = B(). מספר הרשומות של = T().V()=T(δ()) ז"א, מספר הרשומות השונות של = V() מספר הבלוקים שניתן להחזיק בזיכרון הראשי. = M לא נביא בחשבון את הפעולות הדרושות לכתוב את התוצאות על הדיסק. בדרך-כלל, תוצאות הביניים יועברו לשלב הבא (pipeline) ולא ייכתבו על הדיסק. אם זו הפעולה האחרונה, אז גודל הפלט אינו תלוי בשיטת החישוב ולכן לא משפיע על בחירתה. 22 מערכות קבצים 21 מערכות קבצים ביצוע איחוד במעבר יחיד הקלט והפלט הן רב-קבוצות לא ממוינות. 23 מערכות קבצים Union(relation, relation ) { forall r { read r; output r; forall s { read s; output s; סיבוכיות זמן: B() B() + סיבוכיות מקום: (1)O פונקצית הקבצה על עמודה קל לבצע max, min, average ודומיהם במעבר יחיד. סיבוכיות זמן: double average(relation, column A) { int count = 0; value sum = 0; forall r { read r; sum = sum + r.a; count = count + 1; return sum / (double) count; B() 24 מערכות קבצים

relation delta(relation ) { search_structure = ; forall r { במעבר יחיד read r; if (r search_structure) { insert r into search_structure; output r; ביצוע δ אפשרי רק אם - 4 M B(δ()) ה- 4 -עבור חוצצים: שני חוצצי קלט ושניים לפלט פעולות בינריות במעבר יחיד היחס הקטן מבין השניים. אפשר לממש את search_structure כעץ חיפוש או כטבלת ערבול. 25 מערכות קבצים B(δ () ) M יהי ניתן לבצע את הפעולה רק כאשר (נתעלם מהחוצצים הדרושים לקריאת ולכתיבה) \ דוגמה: נשמור עותק מכל רשומה של ( δ(עם מונה למספר המופעים שלה. נעבור על. לכל r ב-, אם r מופיעה ב- אז מקטינים את המונה באחד. בסוף נחזיר את כל איבר של שהמונה שלו נותר חיובי, בריבוי המתאים. 26 מערכות קבצים =(20, 11, 30, 20,11,11) =(11,40,20,11, 20, 20, 50, 40) 11:3, 20:2, 30:1 11:2, 20:2, 30:1 11:2, 20:2, 30:1 11:2, 20:1, 30:1 11:1, 20:1, 30:1 11:1, 20:0, 30:1 11:1, 20:0, 30:1 דוגמה \ בתחילה נייצג את קוראים את :11 :40 :20 :11 :20 :20 קוד לביצוע הפרש \ 27 מערכות קבצים relation Difference(relation, relation ) { search_structure = ; forall s { read s; if s search_structure { insert s into search_structure; search_structure[s].count = 0; search_structure[s].count ++; forall r { read r; if (r search_structure) and (search_structure[r].count > 0) search_structure[r].count --; forall s search_structure repeat search_structure[s].count times output s; 28 מערכות קבצים

צירוף כאשר נכנס לזיכרון סבוכיות ההפרש כאשר לזיכרון (נכון גם לחיתוך) נכנס B() B() + B() נחשב את באמצעות שמירת עותק של כל רשומה של במבנה חיפוש, כאשר מפתח החיפוש הוא השרשור של השדות המשותפים (נסמנו ב- A ). נעבור על כל רשומות (כל רשומה כמידת ריבויה). לכל r ב- נחפש את r.a במבנה החיפוש, ולכל רשומה s שנמצא (כלומר שעבורה (r.a = s.a נוציא את r s לפלט. סיבוכיות זמן: סיבוכיות מקום: 30 מערכות קבצים 29 מערכות קבצים דוגמה דוגמה A B B C A B B C a a2 a1 b2 b c1 c2 c3 פלט (a,,c2) (a,,c3) a a2 a1 b2 b c1 c2 c3 a6 c4 a6 c4 a4 a5 (בזיכרון הראשי) a4 a5 32 מערכות קבצים (בדיסק) 31 מערכות קבצים

דוגמה דוגמה A B B C A B B C פלט --- a a2 a1 b2 b c1 c2 c3 פלט (a1,,c2) (a1,,c3) a a2 a1 b2 b c1 c2 c3 a6 a4 a5 c4 באופן דומה נמשיך עם (a6,),(a4,),(a5,) מול (,c4) a6 a4 a5 c4 34 מערכות קבצים 33 מערכות קבצים δ() סיכום: אלגוריתמי מעבר יחיד צירוף כאשר נכנס לזיכרון הפעולה דרישות הזיכרון גישות דיסק מספר גישות לדיסק: B() + B() סיבוכיות הזמן הכוללת תלויה גם בגודל הפלט. ממוצע π, B() O(1) σ, B() + B() O(1) B() δ() אחד δבמעבר B() + B() δ() \ השיטה היעילה ביותר מבחינת זמן דרישות זיכרון גבוהות 36 מערכות קבצים 35 מערכות קבצים

לולאות מקוננות nested loops אלגוריתמים לביצוע פעולות על יחסים מעבר יחיד (לא תמיד ניתן ליישום). לולאות מקוננות. אלגוריתמים מבוססי מיון. מבוססי ערבול. אלגוריתמים אלגוריתמים המשתמשים באינדקס קיים של יחס. אלגוריתם נאיבי לביצוע פעולות בינריות בין יחסים גדולים: for each tuple s in { read s; for each tuple r in { סיבוכיות זמן: T()T() שיפור: אם נקרא אתבלוק בלוק נקבל T()B() read r; process tuples r and s 38 מערכות קבצים 37 מערכות קבצים צירוף בלולאות מקוננות יישום האלגוריתם הכללי לביצוע join של רלציות גדולות for each tuple s in { read s; for each tuple r in { read r; if s and r join to make a tuple t output t; סיבוכיות זמן: T()B() צירוף בלולאות מקוננות: שיפור כדאי לנצל 4-M בלוקים של זיכרון לאחסון. איטרציה ראשונה: קרא 4-M בלוקים של קרא את כל (עם חוצצים כפולים) ולכל רשומה r ב- חפש בין הבלוקים של שבזיכרון את כל הרשומות s שעבורן מתקיים: r.a = s.a הוצא את r s לפלט מספר גישות דיסק לכל מחזור: B() (4-M) + מספר המחזורים: B()/(M-4) 40 מערכות קבצים 39 מערכות קבצים

צירוף משופר בלולאות מקוננות: מקרה כללי מספר גישות דיסק למחזור: מספר המחזורים: מספר כולל של גישות דיסק : 41 מערכות קבצים (M-4) + B() B()/(M-4) B()/(M-4) ((M-4) + B()) = B() + B() B() /(M-4) B() B() / M אם אחד היחסים גדול בהרבה מהשני, נעדיף שהיחס הגדול יהיה. מדוע? בהנחה ש- >> 4 M צירוף משופר בלולאות מקוננות while ( is not exhausted) { read the next M-4 blocks of and put them in a search structure ordered by A; forall blocks b of { read block b; forall tuples r in b { search r.a in the search structure; forall tuple s found output s r; 42 מערכות קבצים חיתוך מבוסס מיון אלגוריתמים לביצוע פעולות על יחסים מעבר יחיד (לא תמיד ניתן ליישום). לולאות מקוננות. אלגוריתמים מבוססי מיון. מבוססי ערבול. אלגוריתמים אלגוריתמים המשתמשים באינדקס קיים של יחס. לעתים קרובות כדאי למיין את הקבצים קודם. אם הקבצים של ו- ממוינים לפי המפתחות (ובאותו סדר), מבצעים מיזוג עבור על ועל. הכנס לזיכרון את הרשומות הראשונה s של ו- r של. אם r s< (לפי סדר המיון) החלף את s ברשומה הבאה של (ללא פלט). אחרת אם r s> החלף את r ברשומה הבאה של. אחרת הוסף לפלט עותק אחד של הרשומה,r=s והחלף את r ואת s ברשומות הבאות המתאימות להם. איך מבצעים איחוד שומר מיון? 44 מערכות קבצים 43 מערכות קבצים

צירוף מבוסס מיון היכן השתמשנו בהנחה על M? נניח גם ש- ו- ממויינים לפי A, קבוצת התכונות המשותפות ל- ול- ונניח שלאף ערך a של A לא מתקיים. σ A=a () > M עבור על ועל. הכנס לזיכרון את הרשומות הראשונה s של ו- r של. ברשומה הבאה של s החלף את π A(r) אם A(s) >π אחרת אם (s) π A (r) <π A החלף את r ברשומה הבאה של אחרת קרא לזיכרון את כל הרשומות של עבורן (s) π A ( s) π= A לכל רשומה r של עבורה (s) :π A (r ) =π A לכל s בזיכרון הוצא לפלט את הרשומה s r סיבוכיות: B() B() + בלי לקחת בחשבון את הזמן הדרוש לכתיבת הפלט : 45 מערכות קבצים B( ) אלגוריתמים מבוססי מיון: הפעולה מספר גישות לדיסק לקריאת קלט סיכום מספר הבלוקים בזיכרון הראשי 1 B() δ 1 1 Min, Max (שומר מיון) * 2 B()+B(),, / 46 מערכות קבצים * 2 B()+B() * בהנחה שבכל יחס, כל הרשומות הזהות בתכונות הצירוף נכנסות בבלוק שימוש בערבול: הרעיון הבסיסי אלגוריתמים לביצוע פעולות על יחסים מעבר יחיד (לא תמיד ניתן ליישום). לולאות מקוננות. אלגוריתמים מבוססי מיון. מבוססי ערבול. אלגוריתמים אלגוריתמים המשתמשים באינדקס קיים של יחס. כאשר רוצים לבצע פעולה על כמה יחסים: במעבר מקדים מחלקים את כל אחד מהיחסים לדליים באמצעות פונקצית ערבול (hash) מתאימה. כל דלי יכיל מספר בלוקים; וכאשר החוצץ של דלי יתמלא הוא ייכתב לדיסק. במעבר העיקרי, בכל שלב: מביאים לזיכרון את הדליים המתאימים של היחסים, מחשבים את הפלט על סמך הדליים שנמצאים בזיכרון. 48 מערכות קבצים 47 מערכות קבצים

δ בעזרת ערבול מספר הדליים בחלוקה הקובץ המקורי: 53,42,73,81,22,53,91,61,53,11,92,91 מעבר ראשון: נחלק את הקובץ לדליים (רשומות זהות ממופות לאותו דלי). 1: 81,91,61,11,91 2: 42,22,92 3: 53,73,53,53 מעבר שני: נעבור על כל הדליים. לכל אחד: נקרא את כל הדלי לזיכרון נבצע δעל הדלי (נשמור עותק אחד מכל רשומה): 1: 81,91,61,11,91 2: 42,22,92 למה צריך יותר ממעבר אחד? 3: 53,73,53,53 למה לא לסלק את הכפולים כאשר מנסים להכניסם לדלי? 50 מערכות קבצים 49 מערכות קבצים כדי לחלק את הקובץ לדליים, צריך להשתמש בחוצצים, בדומה להקצאת חוצצים לצורך מיזוג, אלא שכאן יש מקור קלט אחד ו- k דליי פלט. עבור: שצריך שני חוצצים לקלט ושני חוצצים לכל דלי, כיוון M גודל זיכרון (בחוצצים) k מספר הדליים צריך להתקיים: + 2 2k M ז"א M/2-1 k δ בעזרת ערבול: המשך כזכור B() הוא מספר הבלוקים (חוצצים) שדורש הקובץ. עבור B() > M (אחרת מספיק מעבר אחד, כמו שראינו) מעבר ראשון: נחלק את הקובץ לדליים. מעבר שני : נעבור על כל הדליים. קרא דלי שלם לזיכרון. בצע δעל הדלי (כתוב העתק אחד מכל רשומה). אלגוריתם זה עובד רק אם כל הדלי נכנס לזיכרון גודל הדלי M שני מעברים יספיקו רק אם,B()/k M ולכן ובסך הכל, 3B() גישות דיסק 2 51 מערכות קבצים M M B( ) km = M 1 2 2 δ בעזרת ערבול: המשך עבור דליים גדולים שלא נכנסים לזיכרון: במעבר הראשון נחלק ל- 2-1/M =k דליים, במעבר הבא, נחלק כל דלי ל- k דליים,... שגודלם אינו עולה על M. דליים כל דלי ל- k נחלק ה- h במעבר מספר המעברים : הזמן : h = log k (B()/M) (2h+1)B() גישות דיסק 52 מערכות קבצים

זמן החיתוך בעזרת ערבול חיתוך בעזרת ערבול for all s write s to bucket B [h(s)]; for all r write r to bucket B [h(r)]; אנו מניחים שלכל,ii הדליים iו-[ i ] B [i] i B נכנסים לזיכרון. 2B() 2B() B() B() קריאת וחלוקתו לדליים קריאת וחלוקתו לדליים קריאת דליי קריאת דליי זמן: for i=1 to number_of_buckets { find the intersection of B s [i] and B r [i] using the single pass algorithm and produce the sub-relation T i 3B() + 3B() סה"כ output T i 54 מערכות קבצים 53 מערכות קבצים גישות לדיסק 2B() 2B() Σ i (B( i )+B( i )) 3B()+3B() צירוף בעזרת ערבול תהי A קבוצת התכונות המשותפות חלק את לדליים 1, k ע"פ h(s.a) כך שלכל B( i ) M :i h(r.a) ע"י 1, k לדליים את חלק עבור i=1,..,k חשב (כיצד?) סה"כ i i סיכום פעולות בעזרת ערבול עבור B M 2 / 2 מספר גישות הדיסק הוא: 3B() δ חיתוך, צירוף, וכו' 3B() 3B() + עבור B גדול יותר, נחליף את המקדם 3 ב- 5 (מדוע?) 56 מערכות קבצים 55 מערכות קבצים

שימוש באינדקס אלגוריתמים לביצוע פעולות על יחסים מעבר יחיד (לא תמיד ניתן ליישום). לולאות מקוננות. אלגוריתמים מבוססי מיון. מבוססי ערבול. אלגוריתמים אלגוריתמים המשתמשים באינדקס קיים של יחס. אינדקס יכול לסייע בחישוב יעיל של חלק מהפעולות. דוגמה: עבור σכאשר C C(x) הוא a x b נקבל שאילתת טווח. חיתוך: כאשר קטן וקיים אינדקס על : לכל רשומה ב- נבחן באינדקס אם היא קיימת גם ב-. סיבוכיות זמן: O(T()) כדאי רק כאשר גדול מאד. הערה: אם ממוין, אז ייתכן ששתי קריאות עוקבות תתייחסנה לאותו בלוק של, ומספר הגישות יהיה קטן יותר. 58 מערכות קבצים 57 מערכות קבצים שימוש באינדקס לביצוע צירוף נניח שיש לבצע Y. עבור, וקיים אינדקס צפוף של (X,Y) (Y,Z) לכל רשומה r חפש את r.y ב- שעבורה s כל רשומה עבור הוצא את s r לפלט. 59 מערכות קבצים s.y = r.y סיבוכיות קריאת.B() : בממוצע לכל ערך של r.y יהיו T()/V(,Y) רשומות של (כאשר V(,Y) הוא מספר הערכים השונים של שדות Y ב- ) סה"כ: T()/V(,Y) T() השפעת גודל הזיכרון הראשי לא תמיד עומד לרשותנו מספיק זיכרון, לעתים, הזיכרון צריך להספיק למספר פעולות שנעשות במקביל. לכן נאלץ לחלק את הזיכרון בין הפעולות השונות, או לבצע חלק מהפעולות באופן סדרתי. פעולות שלא ניתן לבצע בפחות זיכרון: פעולות של מעבר יחיד פעולות של שני מעברים (מיון, ערבול, וכו'). פעולות שניתן לבצע בפחות זיכרון (תוך כדי פגיעה בזמן): לולאות מקוננות אפשר להרשות יותר מעברים בפעולות מבוססות מיון או ערבול. 60 מערכות קבצים

אלגברה רלציונית אפשר לכתוב כל מיני ביטויים אלגבריים עם הפעולות שהכרנו, למשל: הביטוי: π name,addr (σ title= gone with the wind and gender = F (Movietar tarsin)) עם הסכמות: Movietar(name, addr, gender), tarsin(title, year, name) מחזיר את שמות כל השחקניות של "חלף עם הרוח" ואת הכתובות שלהן. ELECT name, addr FOM Movietar, tarsin WHEE title= gone with the wind and gender=f and Movietar.name=tarsIn.name; עץ של ביטוי באלגברה רלציונית תרגום של 61 מערכות קבצים π name,addr (σ title = Gone, gender = F (Movietar tarsin)) עץ הביטוי עץ שקול π name,addr π name,addr σ title= Gone and gender = F σ gender = F σ title= Gone Movietar tarsin Movietar tarsin π name,addr (σ gender = F (Movietar) σ title= Gone (tarsin)) 62 מערכות קבצים הקדמת ביצוע של פעולת בחירה ביצוע של פעולת בחירה מקטין את מספר הרשומות ביחס, וכדאי להיפטר מרשומות כמה שיותר מוקדם. נרצה להוריד את הפעולה בעץ הביטוי. פעולות על עץ הביטוי שימוש בשוויונות של אלגברה רלציונית משנות את מבנה העץ, לדוגמה: אסוציאטיביות של צירוף: ( ) T = ( T ) קומוטטיביות של צירוף: = הקדמת ביצוע של בחירה: σ C ( ) = σ C () = σ C () = σ C () σ C () σ title = Gone, gender = F (Movietar tarsin)) = σ gender = F (Movietar) σ title= Gone (tarsin) אם תנאי הבחירה רלוונטי ליחסים המתאימים: σ C ( ) = σ C () = σ C () = σ C () σ C () σ gender = F σ title= Gone פעולת פעולת תקטין (במחצית?) את גודל היחס תקטין בהרבה את היחס אגף ימין של הצירוף ייכנס כולו לזיכרון. 64 מערכות קבצים 63 מערכות קבצים

יותר מתוחכם: הרמה לשם הורדה Movie(title, year, studio), tarsin(title, year, name) π name,studio (σ year = 1996 (Movie) tarsin) עץ שקול עץ הביטוי π name,studio π name,studio הקדמת הטלות המוטיבציה: הטלה מקטינה את גודל הרשומות, וכדאי להקטין את הרשומות כמה שאפשר יותר מוקדם. הביטוי? בעץ לא כדאי להוריד את ה- π מתי σ year=1996 Movie tarsin σ year=1996 Movie σ year=1996 tarsin כאשר ליחס יש אינדקס, ביצוע ההטלה ייצור יחס חדש חסר אינדקס. עבור יחס ממוין, ההטלה אינה בהכרח ממוינת. π name,studio (σ year = 1996 (Movie) σ year = 1996 (tarsin)) 66 מערכות קבצים 65 מערכות קבצים δ הערכת גודל התוצאה הקדמת פעולת δמקטינה את מספר הרשומות, על-כן, כדאי לבצעה מוקדם ככל האפשר. δ( ) = δ (δ() ) = δ ( δ()) = δ() δ() ואפילו יותר מפעם אחת מספר גישות הדיסק לביצוע פעולה תלוי בגודל הקלט, אבל... כמו הטלה, δעלולה לגרום לאובדן של אינדקס, כך שלפעמים הקדמת הפעולה אינה כדאית. 67 מערכות קבצים כאשר מחשבים זמן ביצוע לעץ, זמן הביצוע של צומת פנימי תלוי בגודל הפלט של בניו, כן יש לחשב את גודל התוצאה של ביצוע הפעולות הרלציוניות ועל המתאימות להם. בד"כ, אי-אפשר לחשב מראש את הגודל במדויק, ולכן מטרתנו היא לקבל הערכה. דוגמה להערכת גודל תוצאה בהטלה π: אם ליחס יש n רשומות, ובשדות שנבחרו יש f בתים, אזי הגודל של ( π(הוא n f בתים 68 מערכות קבצים

הערכת גודל תוצאת בחירה σ סימון (תזכורת): מספר הערכים השונים שיש לתכונה A V(,A) = T(δ(π A ())) תוחלת מספר הרשומות עם ערך ספציפי הוא E(T(σ A=x ())) = T() / V(,A) חישוב זה אינו תלוי בהתפלגות הערכים בתוך, אלא רק בהנחה שהערך x בפעולת ה- σנבחר בהתפלגות אחידה (יוניפורמית). לדוגמה, אם לתכונה A שני ערכים ( V(,A) = (2 a,b ומתקיים: P(π A () = a)= 0.9, P(π A () = b)= 0.1 נבחר יוניפורמית מתוך,a,b אז E(T(σ A=x ())) = ½ T(σ A=a ()) + ½ T(σ A=b ()) = ½ (0.9 T()) + ½ (0.1 T()) = T() /2 = T() / V(,A) הערכת גודל שאילתות טווח T(σ A x ()) אם ההתפלגות על התחום ידועה: ונניח ש- x 69 מערכות קבצים E(T(σ A x ())) = P(A x) T() אחרת נניח שההתפלגות אחידה: :A = [a,b] עבור תחום רציף E(T(σ A x ())) = (x-a)/(b-a) T() עבור תחום סופי n A= {a 1,,a כאשר : a 1 < a 2 < <a n E(T(σ A ai ())) = (i / n) T() באופן שרירותי שמתקיים: T(σ A x ()) = ⅓T() T(σ A>x ()) = ⅔T() עבור תחום בגודל לא-ידוע, נניח 70 מערכות קבצים 2 הערכת גודל תוצאת δ הערכת גודל שאילתות טווח נביט ביחס בעל סכמה ) n (A 1,, A מתוך ההגדרה V(),T(δ()) = אבל בדרך-כלל V() אינו ידוע. מה עם ())? T(σ x A y σ x A y () = σ x A (σ A y ()) עבור תחום לא ידוע נניח ש- 2/9 מהרשומות מקיימות את התנאי ע"פ הבא: ה"נימוק" T(σ x A y ()) = ⅔ T(σ A y ()) = ⅔ ⅓ T() = (2/9)T() V (, A ) = V( π 1 V() 1 i n V() = min V(, 1 i n i V(, A i A i ()) A i ) 1 ), T() 2 נסמן מתקיים כלל אצבע: 72 מערכות קבצים 71 מערכות קבצים

(Y,Z) הערכת גודל צירוף (X,Y) הערכת גודל צירוף (Y,Z) (X,Y) הנחות: Y מכיל תכונה בודדת p(y 1 ) p(y n ) ממוינים כך ש- Y ערכי y 1,,y n הם רישא של הסדרה Y ערכי y i V(Y,) y i+1 V(Y,) כלומר, דוגמה: נסתכל על ההתפלגות של אותיות באנגלית e, t, a, o,, q, z לפי סדר שכיחות (e היא האות הנפוצה ביותר, ו- z הנדירה ביותר) נניח שהשדה Y מכיל אות בודדת בהתפלגות הנ"ל. אז ההנחה אומרת שאם V(Y,) o אז גם V(Y,) e,t,a הנחות: Y מכיל תכונה בודדת p(y 1 ) p(y n ) האפשריים ממוינים על פי הסתברות Y ערכי y 1 y,, n הנמצאים בפועל ביחסים הם הרישא של הסדרה Y ערכי y i V(Y,) y i+1 V(Y,) כלומר, מכאן שאם V(,Y) V(,Y) אז () π Y () π Y π X ( ) = π X () שמירת ערכים: לכל התכונות של באופן סימטרי, לכל התכונות של 74 מערכות קבצים 73 מערכות קבצים (Y,Z) (X,Y) השוואת אלטרנטיבות לחישוב הערכת גודל צירוף דוגמה: חישוב עבור U(Z,W) (X,Y) (Y,Z) אם V(,Y) V(,Y) אז נעריך כי: ניתן לשלב זוג רשומות r, s בהסתברות V(,Y) 1/ רשומות מ- T()/ V(,Y) ישתלב עם s בממוצע E(T( )) = T() T()/V(,Y) (X,Y) (Y,Z) U(Z,W) T()=1000 T()=2000 T(U)=5000 E(T( אם,V(,Y)>V(,Y) אז T() T()/V(,Y) )) = V(,Y) = 20 V(,Y) = 50 V(,Z) = 100 V(U,Z) = 500 E(T( :(X,Y) ראשית, (Y,Z) E(T( )) = T() T()/max{V(,Y),V(,Y) = 2,000 1,000 / 50 = 40,000 ובאופן כללי: )) = T() T()/max{V(,Y),V(,Y) 76 מערכות קבצים 75 מערכות קבצים

הערכת U(Z,W)) T(((X,Y) (Y,Z)) T(( ) U) = T ( ) T(U) /max{v (, Z), V(U, Z) V (, Z) = V(,Z) = 100 בגלל ההנחה על שמירת הערכים לפי הנתונים V(U, Z) = 500 T(U) = 5,000 לכן: T (( ) U) = 40,000 5,000 / max{100, 500 = 400,000 הערכת((( U(Z,W T((X,Y) ((Y,Z)) T ( U) = T() T(U) / max{v(, Z), V(U, Z) = 2,000 5,000 / 500 = 20,000 V ( U, Y) = V(,Y) = 50 בגלל ההנחה על שמירת ערכים T( ( U)) = T() T( U)/max{V(,Y),V( U,Y) = 1,000 20,000/max{20, 50 = 400,000 כיוון ש (U ), ( U = ) קיבלנו אותו גודל בשתי הדרכים 78 מערכות קבצים 77 מערכות קבצים הערכה טובה יותר של גדלי פעולות באמצעות היסטוגרמות עבור תחום דיסקרטי קטן n A={a 1 < <a נשמור את מספר הרשומות שבהן מופיע ערך a i A n i =T(σ (A)=ai ()) σ (A)<x () = a i x n i σ (במדויק): הערכת גודל צירוף באמצעות היסטוגרמה נניח שנתון היחס weather), (dayוברצוננו month, להעריך את הגודל נחשב את גודל הערה: באופן מעשי, לא נעדכן את ההיסטוגרמה אחרי כל עדכון של היחס. כאשר ההיסטוגרמה לא מעודכנת, הביטוי הנ"ל הוא רק הערכה..T(π weather (σ month=jan ()) π weather (σ month=july ())) ביחסים ()) πו- weather (σ Jan ()) πיש weather (σ July 31 רשומות כ"א Weather Jan July 240 4 31 / 31 = Tעבור הצירוף. now 10 0 ain 15 1 Fair 5 10 sunny 1 20 ולכן נקבל את ההערכה אך עבור ההיסטוגרמה הנתונה משמאל, נקבל את ההערכה.T = 15 1 + 5 10 + 1 20 = 85 80 מערכות קבצים 79 מערכות קבצים

הערכת זמן החישוב על-פי גודלן של תוצאות ביניים הערכה של גדלי פעולות, התחום גדול כאשר נבחר < w 1 < < w m נעריך את גודל σ: w 0 i ונשמור את n i = T(σ wi<(a) w(i+1) ()) σ (A) x () = a x n i דרך חלופית, חלוקה לתת תחומים, למשל מאיונים (percentile) : {x : x נמצא a 1,,a 99 כך שלכל i מתקיים: a i i = T ( ) 100 נשתמש בהערכה: 81 מערכות קבצים σ (A ) x m ax{ i : x a i ( ) = T ( ) 100 כדי לקבל הערכה גסה לזמן החישוב, נסכם את גודלי תוצאות הביניים (בלי העלים והשורש). למה לא סופרים גישות דיסק? שונים מתקבלות תוצאות שונות. חישוב עצי עבור דוגמא : חישוב U(Z,W) (X,Y) (Y,Z) כמקודם. ( ) U) א. E(T( )) = 40,000 תוצאת הביניים: ( U) ב. תוצאת הביניים: = 20,000 U)) E(T( לפי מדד זה שיטה ב' טובה יותר 82 מערכות קבצים Pipeling בחירת עץ החישוב ), (U יש שתי אפשרויות עבור פעולות אסוציאטיביות: על-מנת לבצע U ב. א. לכתוב את U על דיסק ולקרוא אותו שוב לצורך חישוב הצירוף שבשורש (עם ). לבצע :pipelining להעביר כל שורה מיד עם היווצרותה לתכנית שתבצע את הצירוף שבשורש. U = אך ייתכן U U עבור פעולות קומוטטיביות ואסוציאטיביות שלושת העצים שקולים. ביצוע pipeline דורש יותר זיכרון. אם אין מספיק זיכרון, ייתכן שנאלץ לבצע אלגוריתם יעיל פחות. 84 מערכות קבצים 83 מערכות קבצים

שימוש בעץ חישוב שמאלי עץ שמאלי מאפשר ביצוע :pipeline בכל צומת, היחס השמאלי מתקבל מחישוב והימני נקרא מהדיסק Bushy יש n! עצים שמאליים עם n עלים (נקבעים לפי סדר העלים) היוריסטיקה: לסדר את היחסים לפי גודלם היחס הקטן ביותר יתאים לעלה השמאלי ביותר, כך שתוצאות הביניים תהיינה קטנות ככל הניתן. בחזרה לדוגמה הקודמת אופטימלי עץ 86 מערכות קבצים 85 מערכות קבצים עץ שמאלי (X,Y) (Y,Z) U(Z,W) T()=1000 T()=2000 T(U)=5000 העץ המתקבל מתוך ההיוריסטיקה אופטימלי אינו U Estimated cost = 40,000 E(T( )) = T()T()/max{V(,Y),V(,Y) = 2,000 1,000 / 50 = 40,000 U Estimated cost = 20,000 דוגמה מסכמת: תכנון מפורט (1) דוגמה מסכמת W(A,B) X(B,C) Y(C,D) Z(D,E) T 100 200 300 400 V A: 20 B: 50 C: 50 D: 40 V B: 60 C: 100 D: 50 E: 100 נבצע את 1=W X במעבר יחיד. את רשומות 1 נעביר ישירות לפעולה הבאה. את 2 = 1 Y נבצע ע"י ערבול: נחלק את 1 לדליים שייכתבו על הדיסק; לדליים; את רשומות Y נחלק נבצע צירוף בין הדליים המתאימים של Y ושל 1; ונעביר לפעולה הבאה. את 2 Z נבצע שוב ע"י ערבול: נחלק את רשומות 2 לדליים; נחלק את רשומות Z לדליים; נבצע צירוף בין הדליים המתאימים של Z ושל 2; את התוצאה נעביר לפלט. 88 מערכות קבצים יש לבצע W X Y Z נשתמש בעץ שמאלי: ((W X) Y) Z נעריך תחילה את זמן הצירוף ע"י חישוב גדלי תוצאות הביניים גודל :1 = W X 333 רשומות גודל :2 = (W X) Y 1000 רשומות מחיר: = 1333 1000 333 + 87 מערכות קבצים

דוגמה מסכמת: תכנון מפורט נניח שהזיכרון יכול להכיל 20 חוצצים בני 10 רשומות כ"א. (2) במקרה זה ניתן לבצע את 1=W X במעבר יחיד: W דורש 100/10 חוצצים. חוצצים). (שני ונקרא את X סדרתית לזיכרון את W נכניס יישאר מקום לעוד = 8 2 10-20 חוצצים. התוצאה תועבר ישירות ל- 1 Y מבלי לכתוב אותה על הדיסק. המחיר: 10= 100/10 גישות = 20 200/10 גישות 30 גישות קריאת W: קריאת X: סה"כ : דוגמה מסכמת: תכנון מפורט (3) בחישוב 2, = 1 Y היחסים לא נכנסים לזיכרון, ולכן נשתמש בערבול. לערבול של 1 אין צורך בחוצצים עבור הקלט. למה? מהפעולה הקודמת נותרו 8 חוצצים, המספר המכסימלי של דליים הוא.8/2 = 4 דיסק. גישות 333/10 = 34 1 הוא חלוקת מחיר לחלוקת Y נזדקק ל- = 60 300/10 2 גישות דיסק נוספות. ביצוע הצירוף יחייב את קריאת כל דליי 1 ו- Y, כלומר = 64 30 34 + גישות דיסק. סה"כ: 158 גישות. 90 מערכות קבצים 89 מערכות קבצים לביצוע הצירוף נקרא דלי שלם של Yלזיכרון, = 8 (300/10)/4 חוצצים. נזדקק לשני חוצצים נוספים כדי לקרוא את הדליים של 1. נותרו 10 חוצצים. (4) דוגמה מסכמת: תכנון מפורט דוגמה מסכמת: תכנון מפורט (5) סה"כ חישוב 1 חישוב 2 חלוקת 2 Z חלוקת ביצוע הצירוף לביצוע 2, Z שוב נשתמש בערבול. נחלק את 2 ל- 5 דליים, תוך שימוש ב- 10 החוצצים שנותרו. הכתיבה תדרוש עוד = 100 1000/10 גישות. נחלק גם את Zל- 5 דליים. = 80 2 400/10 גישות. נעבור על כל דליי Z: נקרא כל דלי לזיכרון, ונבצע צירוף עם 2. כל דלי של Zיכיל = 8 40/5 חוצצים, ולכן ייכנס כולו לזיכרון. נבצע צירוף במעבר יחיד עם הדלי המתאים של 2. פעולה זו תדרוש את קריאת כל 2 וקריאת Z. סה"כ = 140 100 40 + גישות. 30 158 100 80 140 508 גישות דיסק. ניתן לבצע הערכה דומה לדרכים אחרות לחישוב היחס הרצוי, וכך לבחור מביניהן. תרגיל בית: בצעו את החישוב עם לולאות מקוננות, ואח"כ עם גודל זיכרון כפול. 92 מערכות קבצים 91 מערכות קבצים

גורמים המשפיעים על מספר הגישות לדיסק סיכום גודל הקלט והפלט אין לנו שליטה על גדלים אלה, והם אינם תלויים באלגוריתם בחירת עץ החישוב נעשה חישוב לכל עץ בנפרד גודלן של תוצאות הביניים (כל הצמתים, פרט לעלים ולשורש) סדר השערוך (evaluation) אלגוריתם השערוך של כל פעולה מבנה כל יחס (האם הוא ממוין? האם יש לו אינדקס?) כמות הזיכרון הפנימי (האם מספיק לשמירת תוצאות ביניים?) האם תוצאות הביניים נשמרות בדיסק או שעושים?pipelining 93 מערכות קבצים חלק ניכר מהפעולות על קבצים כיום נעשות באמצעות מסדי נתונים רלציוניים (טבלאיים). הגדרת הפעולה במסד הנתונים מנותקת מאלגוריתם המימוש. המימוש נבחר (אוטומטית) ע"י תכנית query optimizer של גודלי תוצאות הביניים. והערכות סמך הפעולות הדרושות, על לכל מימוש מעריכים את הזמן הדרוש, ובוחרים את המימוש עם תוחלת הזמן המינימאלית. אפשר לשנות את המימוש אם מתברר שההנחות לא היו נכונות. נגענו רק בקצה המזלג חומר לקורס שלם (מימוש מסדי נתונים) 94 מערכות קבצים